package com.demo459_重复的子字符串;

public class Solution {

    public static void main(String[] args) {
        String s = "aa";
        boolean b = repeatedSubstringPattern(s);
        System.out.println(b);
    }

    public static boolean repeatedSubstringPattern(String s) {
        int length = s.length();
        int max = length / 2;
        for (int i = 2; i <= max; i++) {
            // 最小长度可以分为 1 , 只要全都是一样的字母那就是可以的
            if (check(s, i)) {
                return true;
            }
        }

        // 最后再检查一下自身是不是这个 由一个相同的字符组成
        boolean check = check(s, s.length());
        return check;
    }

    // 一个字符串是否可以分为 k 个重复的部分
    private static boolean check(String s, int k) {
        int length = s.length();
        if (length % k != 0) {
            return false;
        }
        int avg = length / k;
        String s1 = s.substring(0, avg);
        for (int i = 1; i < k; i++) {
            if (!s1.equals(s.substring(avg * (i), avg * (i + 1)))) {
                return false;
            }

        }
        return true;
    }
}
